package com.ruoyi.member.mapper;

import com.ruoyi.member.domain.History;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * 观看历史Mapper接口
 *
 * @author ruoyi
 * @date 2025-01-22
 */
public interface HistoryMapper {
    /**
     * 查询观看历史
     *
     * @param id 观看历史主键
     * @return 观看历史
     */
    public History selectHistoryById(Long id);

    /**
     * 查询观看历史列表
     *
     * @param history 观看历史
     * @return 观看历史集合
     */
    public List<History> selectHistoryList(History history);

    /**
     * 查询用户观看历史
     *
     * @param userId 用户ID
     * @return 观看历史集合
     */
    public List<History> selectHistoryByUserId(Long userId);

    /**
     * 获取用户最近观看的影视
     *
     * @param userId 用户ID
     * @param limit 数量限制
     * @return 观看历史集合
     */
    public List<History> selectRecentHistory(@Param("userId") Long userId, @Param("limit") int limit);

    /**
     * 获取用户对某影视的观看进度
     *
     * @param userId 用户ID
     * @param movieId 影视ID
     * @return 观看历史
     */
    public History selectHistoryByUserAndMovie(@Param("userId") Long userId, @Param("movieId") Long movieId);

    /**
     * 新增观看历史
     *
     * @param history 观看历史
     * @return 结果
     */
    public int insertHistory(History history);

    /**
     * 修改观看历史
     *
     * @param history 观看历史
     * @return 结果
     */
    public int updateHistory(History history);

    /**
     * 删除观看历史
     *
     * @param id 观看历史主键
     * @return 结果
     */
    public int deleteHistoryById(Long id);

    /**
     * 批量删除观看历史
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteHistoryByIds(Long[] ids);

    /**
     * 删除用户所有观看历史
     *
     * @param userId 用户ID
     * @return 结果
     */
    public int deleteByUserId(Long userId);

    /**
     * 删除会员所有观看历史
     *
     * @param memberId 会员ID
     * @return 结果
     */
    public int deleteByMemberId(Long memberId);

    /**
     * 获取会员继续观看列表
     *
     * @param memberId 会员ID
     * @return 观看历史列表
     */
    public List<History> getContinueWatchingList(Long memberId);
}